package com.ym.medical.domain.bo.msg;

import com.ym.medical.enums.WxMsgTypeEnum;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author: DaiKuangYin
 * @Date: 2020/1/7 10:51
 */
@Data
public class TemplateParam {

    private String key;
    private String value;

    public TemplateParam(String key, String value) {
        this.key = key;
        this.value = value;
    }

    /**
     * 支付模板
     *
     * param:
     * 订单号  AB12345
     * 订单金额 200元
     * 支付时间 2019.12.7.09.52
     *
     * @param params
     * @return
     */
    public static List<TemplateParam> generatePayMaTemplateParam(String[] params) {
        List<TemplateParam> paras = new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("character_string5", params[0]));
        paras.add(new TemplateParam("amount2", params[1]));
        paras.add(new TemplateParam("date3", params[2]));
        return paras;
    }

    /**
     * 退费模板
     *
     * param:
     * 订单号 12345
     * 商品名称 咨询服务
     * 金额  ¥100.00元
     * 退款说明  咨询取消
     *
     * @param params
     * @return
     */
    public static List<TemplateParam> generateRefordMaTemplateParam(String... params) {
        List<TemplateParam> paras = new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("character_string1", params[0]));
        paras.add(new TemplateParam("thing2", params[1]));
        paras.add(new TemplateParam("amount4", params[2]));
        paras.add(new TemplateParam("thing3", params[3]));
        return paras;
    }

    /**
     * 帖子
     *
     * @param params
     * @return
     */
    public static List<TemplateParam> generateTopicMaTemplateParam(String[] params) {
        List<TemplateParam> paras = new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("thing01", params[0]));
        paras.add(new TemplateParam("thing02", params[1]));
        paras.add(new TemplateParam("thing03", params[2]));
        return paras;
    }

    /**
     * 医生答复模板
     *
     * param:
     患者姓名 张三
     提问内容 我需要去医院检查吗
     回复人 小杏
     回复时间 2019-11-15 18:30:36
     *
     * @param params
     * @return
     */
    public static List<TemplateParam> generateReplyMaTemplateParam(String[] params) {
        List<TemplateParam> paras = new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("name2", params[0]));
        paras.add(new TemplateParam("thing3", params[1]));
        paras.add(new TemplateParam("name6", params[2]));
        paras.add(new TemplateParam("time4", params[3]));
        return paras;
    }


    /**
     * 电话预约模板
     *
     * param:
     * 就诊人  张三
     * 就诊时间 2019年9月22日 10：30
     * 预约医生 王医生
     * 就诊科室 xx科室
     * 医院名称 人民医院
     *
     * @param params
     * @return
     */
    public static List<TemplateParam> generatePhoneInquiryMaTemplateParam(String... params) {
        List<TemplateParam> paras = new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("name1", params[0]));
        paras.add(new TemplateParam("date5", params[1]));
        paras.add(new TemplateParam("name6", params[2]));
        paras.add(new TemplateParam("thing4", params[3]));
        paras.add(new TemplateParam("thing8", params[4]));
        return paras;
    }

    /**
     * 总结模板消息
     *
     * param:
     * 问诊医生 王医生
     * 问诊内容 晚上血压又升高了，是否需要加药？
     * 提醒内容 晚上可以加一粒
     * 提示说明 您可以在微信中直接回复医生
     *
     * @param params
     * @return
     */
    public static List<TemplateParam> generateSummaryMaTemplateParam(String[] params) {
        List<TemplateParam> paras = new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("name3", params[0]));
        paras.add(new TemplateParam("thing1", params[1]));
        paras.add(new TemplateParam("thing2", params[2]));
        paras.add(new TemplateParam("thing4", params[3]));
        return paras;
    }

    /**
     * 评价模板信息
     *
     * param:
     * 问诊医生 王医生
     * 问诊内容 晚上血压又升高了，是否需要加药？
     * 提醒内容 晚上可以加一粒
     * 提示说明 您可以在微信中直接回复医生
     *
     * @param params
     * @return
     */
    public static List<TemplateParam> generateEvaluateMaTemplateParam(String[] params) {
        List<TemplateParam> paras = new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("name3", params[0]));
        paras.add(new TemplateParam("thing1", params[1]));
        paras.add(new TemplateParam("thing2", params[2]));
        paras.add(new TemplateParam("thing4", params[3]));
        return paras;
    }

    /**
     * 订单异常模板信息
     *
     * param:
     * 问诊医生 王医生
     * 问诊时间 2019年9月22日8：30
     * 取消原因 医生退诊
     * 提示说明 点击详情更换医生问诊
     *
     * @param params
     * @return
     */
    public static List<TemplateParam> generateOrderExceptionMaTemplateParam(String[] params) {
        List<TemplateParam> paras = new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("name2", params[0]));
        paras.add(new TemplateParam("date3", params[1]));
        paras.add(new TemplateParam("thing4", params[2]));
        paras.add(new TemplateParam("thing5", params[3]));
        return paras;
    }

    /**
     *诊后随访提醒
     *
     * param:
     * 医生 王国
     * 随访内容 嵌体牙修复术诊后随访
     * 随访时间 2019/9/22
     * 随访科室 xx科室
     * 患者信息 张三，男，45岁
     *
     * @param params
     * @return
     */
    public static List<TemplateParam> generateFollowUpMaTemplateParam(String[] params) {
        List<TemplateParam> paras = new ArrayList<TemplateParam>();
        paras.add(new TemplateParam("name5", params[0]));
        paras.add(new TemplateParam("thing3", params[1]));
        paras.add(new TemplateParam("date2", params[2]));
        paras.add(new TemplateParam("thing1", params[3]));
        paras.add(new TemplateParam("thing7", params[3]));
        return paras;
    }


    /**
     * 构建消息模板
     *
     * @param wxMsgTypeEnum
     * @param params
     * @return
     */
    public static List<TemplateParam> generateTemplateParam(WxMsgTypeEnum wxMsgTypeEnum, String[] params) {
        List<TemplateParam> result = new ArrayList<>();
        switch (wxMsgTypeEnum) {
            case MINI_PAY_MSG:
                result = generatePayMaTemplateParam(params);
                break;
            case MINI_REFUND_MSG:
                result = generateRefordMaTemplateParam(params);
                break;
            case MINI_FOLLOW_UP_MSG:
                result = generateFollowUpMaTemplateParam(params);
                break;
            case MINI_TOPIC_REMINDER_MSG:
                result = generateTopicMaTemplateParam(params);
                break;
            case MINI_DOCTOR_REPLY_MSG:
                result = generateReplyMaTemplateParam(params);
                break;
            case MINI_INQUIRY_EVALUATE_MSG:
                result = generateEvaluateMaTemplateParam(params);
                break;
            case MINI_PHONE_APPOINTMENT_MSG:
                result = generatePhoneInquiryMaTemplateParam(params);
                break;
            case MINI_INQUIRY_SUMMARY_MSG:
                result = generateSummaryMaTemplateParam(params);
                break;
            case MINI_ORDER_EXCEPTION_MSG:
                result = generateOrderExceptionMaTemplateParam(params);
                break;
        }
        return result;
    }
}